#include <bits/stdc++.h>
using namespace std;
/*
2643. 一最多的行
已解答
简单
相关标签
相关企业
提示
给你一个大小为 m x n 的二进制矩阵 mat ，请你找出包含最多 1 的行的下标（从 0 开始）以及这一行中 1 的数目。

如果有多行包含最多的 1 ，只需要选择 行下标最小 的那一行。

返回一个由行下标和该行中 1 的数量组成的数组。

 

示例 1：

输入：mat = [[0,1],[1,0]]
输出：[0,1]
解释：两行中 1 的数量相同。所以返回下标最小的行，下标为 0 。该行 1 的数量为 1 。所以，答案为 [0,1] 。 
示例 2：

输入：mat = [[0,0,0],[0,1,1]]
输出：[1,2]
解释：下标为 1 的行中 1 的数量最多。该行 1 的数量为 2 。所以，答案为 [1,2] 。
示例 3：

输入：mat = [[0,0],[1,1],[0,0]]
输出：[1,2]
解释：下标为 1 的行中 1 的数量最多。该行 1 的数量为 2 。所以，答案为 [1,2] 。
 

提示：

m == mat.length 
n == mat[i].length 
1 <= m, n <= 100 
mat[i][j] 为 0 或 1
*/

class Solution {
	public:
	vector<int> rowAndMaximumOnes(vector<vector<int>>& mat) {
		int maxOnes = 0;   // 记录最多的 1 的数量
		int rowIndex = -1; // 记录最多 1 的行的下标

		// 遍历每一行
		for (int i = 0; i < mat.size(); ++i) {
			// 计算当前行中 1 的数量
			int onesCount = 0;
			for (int j = 0; j < mat[i].size(); ++j) {
				onesCount += mat[i][j]; // mat[i][j] 只有 0 或 1
			}
			
			// 如果当前行的 1 的数量更多，更新最大值
			if (onesCount > maxOnes) {
				maxOnes = onesCount;
				rowIndex = i;
			}
		}

		// 如果没有找到 1 的行，默认返回 [0, 0]
		if (rowIndex == -1) {
			return {0, 0};
		}

		return {rowIndex, maxOnes};
	}
};
